package com.tedu.bill.demo8;

import java.util.*;

/**
 * Author：毕龙
 * Date: 2024/5/26 9:23
 */
public class MyThread1 extends Thread{
    //表示微信的红包是100元
    private static double money = 100;
    //抢红包的人数是3
    private static int count = 3;
    //声明一个红包表示最小的红包
    private final double MIN_MONEY = 0.01;
    //声明一个最大的值表示手气最佳
    private static Map<String,Double> map = new HashMap<>() ;

    @Override
    public void run() {
        synchronized (Thread.class){
            //声明一个奖品
            double prize = 0;

            //判断是否到达红包末尾
            if(count == 0){
                System.out.println(getName()+"不好意思，你来晚了，红包抢完了！！！");
            }else{
                //表示红包还有
                if(count == 1){
                    //红包money减去前几次随机的红包
                    prize = money;


                    //将所有的奖励保留两位小数
                    String format = String.format("%.2f",prize);

                    //获取的奖励
                    System.out.println(getName()+"抢到"+format+"元");

                    count--;
                    //将最后的一次放进map集合中
                    map.put(getName(),prize);
                    //遍历map集合
                    Collection<Double> values = map.values();
                    Double max = Collections.max(values);
                    for (String s : map.keySet()) {
                        if(map.get(s).equals(max)){
                            System.out.println(s+"手气最佳");
                        }
                    }

                }else{
                    //获取随机的奖励
                    //随机数的范围 0 ~ (100-0.01*(count-1))
                    // 0 ~ 99.98
                    prize = Math.random()*(money-0.01*(count-1));
                    //红包中剩余的钱
                    money = money-prize;
                    //领红包的人数减减
                    count --;
                    //没有到达最后一次放进map集合中
                    map.put(getName(),prize);

                    //将所有的奖励保留两位小数
                    String format = String.format("%.2f",prize);

                    //获取的奖励
                    System.out.println(getName()+"抢到"+format+"元");
                }

            }
        }
    }
    public static void test(){

    }

}
